package chapter08_class

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test11_Type
 * Package: chapter08_class
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-07-03
 *          Time: 15:39
 */

//特质的自身类型
object Test11_Type {
  def main(args: Array[String]): Unit = {
    val user = new RegisterUser("alice","123456")
    user.insert() //实现了特征
  }
}

//用户类
class User(val name: String, val password: String)

trait UserDao {
  //前面的下划线 随便给一个别名都可以
  //可以任务 当前的UserDao当中 就存在一个User 就可以获取到属性和方法
  //UserDao 要使用到User当中的一些属性 但是又不想有继承关系 使用自身类型 内部就有一个User
  //相当于依赖注入
  _: User =>

  //向数据库插入数据 获取到用户名 密码 才能插入 解决办法定义一个自身类型
  def insert() = {
    println(s"insert into db: ${this.name} ")
  }
}

//定义子类 注册操作
class RegisterUser(name:String,password: String) extends User(name, password) with UserDao